Windowsのログを外部バックアップする
はじめに
システム運用においてログの長期保存と外部バックアップはとても重要です。サーバ自体に障害が発生し起動しなくなった場合、外部に保存されたログのバックアップが無いと障害直前に何が起きていたのか分かりませんし、長期的に保存されていなければ発生した問題が「以前から起きていた」のか「たまたま今だけ起きた」のかが分かりません。
Linuxの場合はシステムログがテキストファイルで出力されているため、fluentdを使ったり、あるいはrsyncなどで外部にそのままコピーしたりします。簡単ですね。
それではWindowsは?単純にテキストファイルになっているのでは無く、以下のようにイベントビューワーという専用の管理アプリケーションで確認します。主に「Application」「システム」「セキュリティ」の3種類のログがシステム管理用として用意されています。「Setup」はその名の通りWindowsセットアップのログで、「転送されたイベント」は他のサーバーからイベントを転送する構成にした場合ここに溜まります。またActive Directoryドメインコントローラになっている場合はその他ログが作成されます。
ということで、Windowsのログをバックアップする手順をご紹介します。
やってみる
長期保存
以下のように、バックアップ用のバッチファイルを用意します。
内容はこんな感じ。
@ECHO OFF cd C:\Backup set dt=%date:~-10,4%%date:~-5,2%%date:~-2,2% wevtutil export-log system system-%dt%.evtx wevtutil export-log application application-%dt%.evtx wevtutil export-log security security-%dt%.evtx EXIT
これを実行すると、「Application」「システム」「セキュリティ」の3つのログが、日付付きのファイル名で保存されます。
さて、このバッチファイルを定期的に実行する必要があります。Windowsではcronの代わりに管理ツールの「タスクスケジューラ」を使います。
[タスクスケジューラ]を起動し、[基本タスクの作成]をクリックします。
[基本タスクの作成ウィザード]画面が表示されます。[基本タスクの作成]で[名前]欄を入力し、[次へ]ボタンをクリックします。
[トリガー]で実行タイミングを指定します。今回は[毎日]にしています。[次へ]をクリックします。
[毎日]を選んだので、実行開始時間と実行間隔を指定します。[次へ]をクリックします。
[操作]で[プログラムの開始]をチェックし、[次へ]をクリックします。
[プログラム/スクリプト]欄に、先ほど作成したバックアップ用バッチファイルを指定します。[次へ]をクリックします。
最後に[完了画面]...なのですが、一箇所修正が必要な設定があるので、[完了をクリックしたときに、このタスクのプロパティダイアログを開く]をチェックして、[完了]ボタンをクリックします。
タスクのプロパティ画面が開きます。修正が必要なのは以下。デフォルトでは[ユーザーがログオンしているときのみ実行する]にチェックが入っているのですが、EC2上のWindowsにユーザーがログオンしっぱなしということは無いと思うので、[ユーザーがログオンしているかどうかにかかわらず実行する]をチェックします。
これで毎日定期的にバックアップが取得されます!
外部保存
バックアップ用バッチファイルの最後(EXITの上)に以下の一行を足すだけで、Amazon S3に保存されます。簡単!
C:\Program Files\Amazon\AWSCLI\aws.exe s3 sync C:\Backup s3://YOUR_BUCKET_NAME/windows-backup/
さいごに
ちょっとしたTipsをお届けしました。Windowsのシステム運用にも様々なノウハウがありますので、本ブログでもたくさんご紹介していければと思います。